package com.lzx.answer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lzx.answer.entity.Problem;
import com.lzx.answer.entity.vo.NicknameVO;
import com.lzx.answer.entity.vo.OssVO;
import com.lzx.answer.entity.vo.ProblemParams;
import com.lzx.answer.entity.vo.UploadProblem;
import com.lzx.common.utils.R;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author lzx
 * @since 2022-10-05
 */
public interface ProblemService extends IService<Problem> {

    //获取所有问题
    R getList(int current, int size);

    //上传问题
    R upload(UploadProblem uploadProblem);

    //根据问题id获取问题信息
    R getProblemById(Long id);

    //统计作者的回答数、文章数
    R statistical(Long userId);

    //上传问题的用户是否解决问题
    R isSolveProblem(Long userId, Long problemId);

    //根据点赞数查询前十条问题
    R rankBeforeTen();

    //获取当前用户关注的人发表的问题
    List<Problem> getUserAttentionPublishProblem(List<Integer> userIds);

    //获取当前用户发表的问题
    R getProblemListByUserId(Long userId);

    //获取所有问题
    R getProblemList(int current, int size);

    //新增问题
    R addProblem(Problem problem);

    //修改问题
    R updateProblem(Problem problem);

    //删除问题
    R deleteProblem(List<Long> ids);

    //根据id获取问题信息
    R getProblem(Long id);

    //搜索
    R searchProblem(ProblemParams problemParams);

    //导出
    void exportProblem(HttpServletResponse response);

    //修改用户头像(问题)
    String updateAvatarToProblem(OssVO ossVO);

    //修改用户昵称(问题)
    String updateNicknameToProblem(NicknameVO nicknameVO);

    //用户修改头像或昵称 es同步
    List<Problem> getUserProblemListToES(Long userId);

    //获取浏览量最多的十个问答
    R getTopTenProblem();
}
